package com.smartstate.EnvironmentMonitor.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.smartstate.EnvironmentMonitor.dto.common.TreeNode;
import com.smartstate.EnvironmentMonitor.entity.ObjMoudel;
import com.smartstate.EnvironmentMonitor.vo.EquipmentForTreeVO;
import com.smartstate.EnvironmentMonitor.vo.ObjmiddleVo;
import org.apache.ibatis.annotations.*;

import java.util.List;
import java.util.Map;

@Mapper
public interface ObjMoudelMapper extends BaseMapper<ObjMoudel> {


    /**
     * 楼宇树结构
     * @return 全部设备数据
     */
    List<EquipmentForTreeVO> selectTree();


    /**
     * 添加图纸
     * @param
     * @return
     */
    int updatePhoto(String id ,String photo);

    /**
     * 添加设备 和楼宇 中间表
     * @param objmiddleVo
     */
    int addObjmiddle(ObjmiddleVo objmiddleVo);


    /**
     * 拿到楼宇id和计量管理
     * @param
     * @return
     */
    int updateMetering(String id,String metering);



    /**
     * 查询全部数据返回树集合
     * @return 全部房屋数据
     */
    List<TreeNode> selectModelTree(@Param("type") String type);

    /**
     * 找子节点id
     * @param id
     * @return
     */
    @Select("select id from objmoudel where #{id} = parentId")
    List<String> queryId(@Param("id") String id);

    @Select("select type from objmoudel where type = #{type}")
    List<String> queryType(@Param("type") String type);

    @Delete("delete from objmiddle where objId = #{id}")
    void deleteObjmiddleById(@Param("id") String id);

    /**
     * 根据Objid查名称
     * @param objId
     * @return
     */
    @Select("select name, parentId from objmoudel where id = #{objId}")
    Map<String,String> queryName(String objId);

    @Select("select photo from objmoudel where id = #{id}")
    String queryImage(String id);

    /**
     * 获取空间结构建模下的所有objId
     * @return
     */
    @MapKey("id")
    Map<String, Object> queryAllObjId(String type);


    /**
     * 查询所有设备对应空间建模的所有objId
     * @return
     */
    @MapKey("deviceId")
    Map<String, Object>  queryAllDeviceIdFitAllObjId(String type);
}
